package com.clothing.customization.repository;

import com.clothing.customization.entity.ClothingAccessory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 服装配饰Repository
 */
@Repository
public interface ClothingAccessoryRepository extends JpaRepository<ClothingAccessory, Long> {
    
    /**
     * 根据状态查询配饰列表（按创建时间倒序）
     * @param status 状态
     * @return 配饰列表
     */
    List<ClothingAccessory> findByStatusOrderByCreateTimeDesc(Integer status);
    
    /**
     * 根据名称模糊查询并按状态筛选
     * @param name 名称
     * @param status 状态
     * @return 配饰列表
     */
    List<ClothingAccessory> findByNameContainingAndStatus(String name, Integer status);
    
    /**
     * 根据配饰类型和状态查询
     * @param type 配饰类型
     * @param status 状态
     * @return 配饰列表
     */
    List<ClothingAccessory> findByTypeAndStatus(String type, Integer status);
    
    /**
     * 根据价格范围和状态查询
     * @param minPrice 最小价格
     * @param maxPrice 最大价格
     * @param status 状态
     * @return 配饰列表
     */
    List<ClothingAccessory> findByPriceBetweenAndStatus(Double minPrice, Double maxPrice, Integer status);
    
    /**
     * 查询指定风格的配饰
     * @param style 风格
     * @param status 状态
     * @return 配饰列表
     */
    @Query("SELECT a FROM ClothingAccessory a JOIN a.applicableStyles s WHERE s = :style AND a.status = :status")
    List<ClothingAccessory> findByApplicableStylesContainingAndStatus(@Param("style") String style, @Param("status") Integer status);
} 